'''
Created on 06/08/2012

@author: Romina
'''
from domain.entity import Entity
from domain.serializable import ISerializable
from domain.entities.comunicacion import Comunicacion
from domain.entities.usuario import Sector, Usuario


class TipoConsulta(Entity):

    @staticmethod
    def deserialize(fields):
        tipo = TipoConsulta()
        tipo.ID = fields.id
        tipo.descripcion = fields.descripcion
        return tipo
    
    @property
    def descripcion(self):
        return self.__descripcion
    @descripcion.setter
    def descripcion(self, value):
        if isinstance(value, str):
            self.__descripcion = value
            
    def __init__(self):
        Entity.__init__(self)
        self.__descripcion = ""


class SubtipoConsulta(Entity):
    
    @staticmethod
    def deserialize(fields):
        subtipo = SubtipoConsulta()
        subtipo.ID = fields.id
        subtipo.descripcion = fields.descripcion
        return subtipo
    
    @property
    def descripcion(self):
        return self.__descripcion
    @descripcion.setter
    def descripcion(self, value):
        if isinstance(value, str):
            self.__descripcion = value
            
    def __init__(self):
        Entity.__init__(self)
        self.__descripcion = ""


class Respuesta(Entity):

    @staticmethod
    def deserialize(fields):
        respuesta = Respuesta()
        respuesta.ID = fields.id
        respuesta.descripcion = fields.descripcion
        respuesta.codigo = fields.codigo
        return respuesta
    
    @property
    def descripcion(self):
        return self.__descripcion
    @descripcion.setter
    def descripcion(self, value):
        if isinstance(value, str):
            self.__descripcion = value
            
    @property
    def codigo(self):
        return self.__codigo
    @codigo.setter
    def codigo(self, value):
        if isinstance(value, str):
            self.__codigo = value
            
    def __init__(self):
        Entity.__init__(self)
        self.__descripcion = ""
        self.__codigo = ""


class Derivacion(Entity):

    @property
    def sector(self):
        return self.__sector
    @sector.setter
    def sector(self, value):
        self.__sector = value
            
    @property
    def estado(self):
        return self.__estado
    @estado.setter
    def estado(self, value):
        self.__estado = value
            
    @property
    def usuario(self):
        return self.__usuario
    @usuario.setter
    def usuario(self, value):
        self.__usuario = value

    def __init__(self):
        Entity.__init__(self)
        self.__usuario = Usuario()
        self.__estado = ""
        self.__sector = Sector()


class Consulta(Entity, ISerializable):
    '''
    classdocs
    '''
    
    def __init__(self):
        Entity.__init__(self)
        self.__comunicacion = Comunicacion()
        self.__tipo = TipoConsulta()
        self.__subtipo = SubtipoConsulta()
        self.__respuesta = Respuesta()
        self.__sector = Sector()
        self.__finalizado = False
        self.__comentario = ""
        self.__usuario = None
        self.__fecha = None
        
    @staticmethod
    def deserialize(fields):
        consulta = Consulta()
        consulta.ID = fields.id
        consulta.comunicacion.ID = fields.comunicacion
        consulta.tipo.ID = fields.consulta
        consulta.subtipo.ID = fields.subconsulta
        consulta.respuesta.ID = fields.respuesta
        consulta.sector.ID = fields.sector
        consulta.finalizado = fields.finalizado
        consulta.comentario = fields.comentarios
        consulta.usuario = fields.usuario
        consulta.fecha = fields.creado_en
        return consulta
    
    
    @property
    def usuario(self):
        return self.__usuario
    @usuario.setter
    def usuario(self, value):
        self.__usuario = value
        
    @property
    def fecha(self):
        return self.__fecha
    @fecha.setter
    def fecha(self, value):
        self.__fecha = value
        
        
    @property
    def comunicacion(self):
        return self.__comunicacion
    @comunicacion.setter
    def comunicacion(self, value):
        self.__comunicacion = value
    
    @property
    def tipo(self):
        return self.__tipo
    @tipo.setter
    def tipo(self, value):
        self.__tipo = value
            
            
    @property
    def subtipo(self):
        return self.__subtipo
    @subtipo.setter
    def subtipo(self, value):
        self.__subtipo = value
            
            
    @property
    def respuesta(self):
        return self.__respuesta
    @respuesta.setter
    def respuesta(self, value):
        self.__respuesta = value
            
            
    @property
    def comentario(self):
        return self.__comentario
    @comentario.setter
    def comentario(self, value):
        self.__comentario = value
            
            
    @property
    def sector(self):
        return self.__sector
    @sector.setter
    def sector(self, value):
        self.__sector = value
        
    @property
    def finalizado(self):
        return self.__finalizado
    @finalizado.setter
    def finalizado(self, value):
        self.__finalizado = value
    
    
    def serialize(self):
        raise Exception("no implementado")
    
    
class ConsultaHistorico(Consulta):
    
    def __init__(self):
        Consulta.__init__(self)
        self.__referencia_consulta = None
        
    @property
    def referencia(self):
        return self.__referencia_consulta
    @referencia.setter
    def referencia(self, value):
        self.__referencia_consulta = value
        
            
            
            
            